using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Xml.Serialization;
using Cuahsi.Data.Interop.WaterML2.om_20;
using Renci.Data.Interop.OpenGIS.Gml_32;

namespace Cuahsi.Data.Interop.WaterML2
{
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace = "http://www.opengis.net/waterml/2.0")]
    [XmlRoot("Collection", Namespace = "http://www.opengis.net/waterml/2.0", IsNullable = false)]
    [DataContract(Name = "CollectionType", Namespace = "http://www.opengis.net/waterml/2.0")]
    public partial class CollectionType :AbstractFeatureType
    {

        private DocumentMetadataPropertyType metadataField;

        private CollectionTypeTemporalExtent temporalExtentField;

        private List<CollectionTypeSourceDefinition> sourceDefinitionField;

        private CollectionTypeParameter parameterField;

        private List<CollectionTypeLocalDictionary> localDictionaryField;

        private List<SamplingFeatureMemberPropertyType> samplingFeatureMemberField;

        private List<OM_ObservationPropertyType> observationMemberField;

        private List<object> communityExtensionField;

        private List<object> internalExtensionField;

        public CollectionType()
        {
            this.internalExtensionField = new List<object>();
            this.communityExtensionField = new List<object>();
            this.observationMemberField = new List<OM_ObservationPropertyType>();
            this.samplingFeatureMemberField = new List<SamplingFeatureMemberPropertyType>();
            this.localDictionaryField = new List<CollectionTypeLocalDictionary>();
            this.parameterField = new CollectionTypeParameter();
            this.sourceDefinitionField = new List<CollectionTypeSourceDefinition>();
            this.temporalExtentField = new CollectionTypeTemporalExtent();
            this.metadataField = new DocumentMetadataPropertyType();
        }

        [DataMember()]
        public DocumentMetadataPropertyType metadata
        {
            get
            {
                return this.metadataField;
            }
            set
            {
                this.metadataField = value;
            }
        }

        [DataMember()]
        public CollectionTypeTemporalExtent temporalExtent
        {
            get
            {
                return this.temporalExtentField;
            }
            set
            {
                this.temporalExtentField = value;
            }
        }

        [XmlElement("sourceDefinition")]
        [DataMember()]
        public List<CollectionTypeSourceDefinition> sourceDefinition
        {
            get
            {
                return this.sourceDefinitionField;
            }
        }

        [DataMember()]
        public CollectionTypeParameter parameter
        {
            get
            {
                return this.parameterField;
            }
            set
            {
                this.parameterField = value;
            }
        }

        [XmlElement("localDictionary")]
        [DataMember()]
        public List<CollectionTypeLocalDictionary> localDictionary
        {
            get
            {
                return this.localDictionaryField;
            }
        }

        [XmlElement("samplingFeatureMember")]
        [DataMember()]
        public List<SamplingFeatureMemberPropertyType> samplingFeatureMember
        {
            get
            {
                return this.samplingFeatureMemberField;
            }
        }

        [XmlElement("observationMember")]
        [DataMember()]
        public List<OM_ObservationPropertyType> observationMember
        {
            get
            {
                return this.observationMemberField;
            }
        }

        [XmlElement("communityExtension")]
        [DataMember()]
        public List<object> communityExtension
        {
            get
            {
                return this.communityExtensionField;
            }
        }

        [XmlElement("internalExtension")]
        [DataMember()]
        public List<object> internalExtension
        {
            get
            {
                return this.internalExtensionField;
            }
        }
    }
}